<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

</body>
<script>
    let data = {

        "name": "wei",
        "weight": 130,
        "hobby": [
            {
                "hobby_name": "hit plane",
                "hobby_time": 18
            },
            {
                "hobby_name": "eat shift",
                "hobby_time": 27
            }
        ],
        "favorite": {
            "one": "haha",
            "two": "hehe"
        }
    };
    //JSON转换成字符串
    data = JSON.stringify(data);
    //如果要调用，需要把JSON字符串转换成JSON对象
    data = JSON.parse(data);


    //正则，常用语脏话屏蔽
    //正则符号：
    /*匹配前面一个表达式 1 次或者多次。等价于 {1,}。

例如，/a+/ 会匹配 "candy" 中的 'a' 和 "caaaaaaandy" 中所有的 'a'，但是在 "cndy" 中不会匹配任何内容。
    * 星号代表0次或者多次，加号是一次或者多次
    *\b  假设 qwer  /\bqw/ 如果qw前面是空的那就能匹配到
    *\b 假设qwer /qw\b/  这个是匹配不到的因为后面紧跟着一个数，
    *\b 写在前面的话如果前面是空的那就能匹配到，如果不是空的那就匹配不到
    * \b写在后面的话，如果后面紧着东西，那就匹配不到，如果后面没有东西那就匹配的到
    *  /^()/只匹配开头是否是不是，如果是则替换，不是就没有改变
    * ?问号是匹配0次或者一次
   */
    let str = "傻降低到客服家降低见覅客服沃尔康复我可of扣多少康复科";
    //正则的规划 /(内容)+/g   加号代表一或者多次，g全局匹配
    let reg  = /^(客服|降低)+/g;//正则，g是全局匹配，不加g的话只会匹配第一个，/(查找文本里面是否存在这个对象)/
    //    /[^()]/   除了里面这个字符其他字符全部转换掉
    let   arr = /[^(傻)]+/g;
    //$结尾部分匹配，必须在结尾的时候出现才会匹配到替换
    let num = /(复科)+$/g;

    let oo = str.replace(reg,'*');//重新拿一个文本接收，replace替换，（属性名，'替换成什么写在这里边'）
    let pp = str.replace(arr,'*');
    let mm = str.replace(num,'66');


    console.log(oo);
    console.log(pp) ;
    console.log(mm) ;

    //单纯的匹配点的话，需要使用反斜杆，不然默认匹配除换行符之外的任何单个字符
    let text = '666  8888...777...999'  ;
    let    text1 = /(.)+/g ;  //输出h
    let    text5 = /(\.)+/g ;  //输出666  8888h777h999
    let text3 =text.replace(text1,'h');
    let text6 =text.replace(text5,'h');
    console.log(text3);
    console.log(text6);

    //  匹配次数 a{5}匹配五次  a{5，}匹配五次以上  a{0,5} 范围匹配
    //    如果需要匹配其中一个即可使用中框号 [789] 匹配789其中一个都可以
    let a= '123568';
    let b = /[789]/;
    let c = a.replace(b,'匹配其中一个');
    console.log(c) ;
    //match 直接调用字符串，后面跟着正则，返回一个字符串
    let rr = a.match(b);
    console.log(rr);


    //如果需要全部匹配   /(直接在里面写)/    匹配单独的其中一个需要使用【】
    let e= '123568';
    let f = /(123)/;
    let g = e.replace(f,'匹配全部');
    console.log(g);

    // 匹配大小写的所有英文字码  [a-zA-z]
    //  匹配数字的话 [0-9]

    //  匹配数字 \d      匹配一个数字。等价于[0-9]。
    // 例如， /\d/ 或者 /[0-9]/ 匹配"B2 is the suite number."中的'2'。

    // \D    匹配一个非数字字符。等价于[^0-9]。
    // 例如， /\D/ 或者 /[^0-9]/ 匹配"B2 is the suite number."中的'B' 。

    //正则的方法
    //exec 一个在字符串中执行查找匹配的RegExp方法，
    // exec它返回一个数组（未匹配到则返回 null）
    let qq= '123568';
    let ww = /(123)/;
    let ee = ww.exec(qq);
    console.log(ee);


    //tetx  一个在字符串中测试是否匹配的RegExp方法，
    // text   它返回 true 或 false
    let yy =   ww.test(qq);
    console.log(yy)

    // \w 匹配单字字符  \s 匹配空白

</script>
</html>